package com.luom.fsp.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.luom.fsp.model.dto.product.ProductQueryRequest;
import com.luom.fsp.model.dto.product.ProductUpdateRequest;
import com.luom.fsp.model.entity.Product;
import com.luom.fsp.model.vo.ProductVO;

/**
 * 商品服务
 *
*/
public interface ProductService extends IService<Product> {

    /**
     * 校验数据
     *
     * @param product
     * @param add 对创建的数据进行校验
     */
    void validProduct(Product product, boolean add);

    /**
     * 获取查询条件
     *
     * @param productQueryRequest
     * @return
     */
    QueryWrapper<Product> getQueryWrapper(ProductQueryRequest productQueryRequest,boolean isSales);
    
    /**
     * 获取商品封装
     *
     * @param product
     * @return
     */
    ProductVO getProductVO(Product product ,boolean isAdmin);

    /**
     * 分页获取商品封装
     *
     * @param productPage
     * @return
     */
    Page<ProductVO> getProductVOPage(Page<Product> productPage);

    /**
     * 更新商品
     * @param productUpdateRequest
     * @return
     */
    boolean updateProduct(ProductUpdateRequest productUpdateRequest);

}
